Position BinarySearch(ArrPtr array, ElemSet x) {
    Position left, right, middle;

    left = 0; /* 初始左边界下标值 */
    right = array->size - 1; /* 初始右边界下标值 */
    while (left <= right) {
        middle = (left + right) / 2; /* 计算序列中点坐标 */
        if (array->data[middle] > x) {
            right = middle - 1; /* 调整右边界 */
        } else if (array->data[middle] < x) {
            left = middle + 1; /* 调整左边界 */
        } else { /* 两者相等 */
            return middle; /* 查找成功，返回数据元素的下标 */
        }
    }
    return NotFound; /* 返回查找不成功的标识 */
}